home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / XLIBP202.ZIP / BLITDEMO.PAS < prev    next >
Pascal/Delphi Source File  |  1994-06-14  |  6KB  |  182 lines

  1. {$IFDEF DPMI}
  2. {$C FIXED PRELOAD PERMANENT}
  3. {$ENDIF}
  4.  
  5. Program BlitDemo;
  6.  
  7. Uses
  8. {$IFDEF DPMI}
  9.     WinAPI,
  10. {$ENDIF}
  11.     Crt,
  12.     XLib2,
  13.     XBm2;
  14.  
  15. const
  16.     turtle : array[0..601] of byte =
  17.     ( 20,30,
  18.         8,14, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  19.         8, 2,14, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  20.         8, 2, 2, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21.         8, 0, 2,14, 0, 0,14,14,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  22.         8, 0, 2, 5, 0, 4, 4, 4, 4,14,14, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  23.         8, 0, 2, 2, 4, 4, 0, 4, 4, 0, 4,14, 0, 0, 0, 0, 0, 0, 0, 0,
  24.         0, 0, 2, 4, 4, 4, 0, 4, 4, 0, 4, 4,14, 0, 0, 0, 0, 0, 0, 0,
  25.         0, 0, 2, 4, 4, 4, 0, 0, 0, 0, 4, 4,14, 0, 0, 0, 0, 0, 0, 0,
  26.         0, 0, 0, 0, 4, 0, 4, 4, 4, 0, 0, 0, 4, 0, 0, 2, 2, 0, 0, 0,
  27.         0, 0, 0, 4, 0, 4, 4, 4, 0, 4, 4, 4, 0,14, 0, 0, 2, 2, 0, 0,
  28.         0, 0, 0, 4, 4, 0, 0, 0, 4, 4, 0, 4, 0, 4, 2, 2, 2, 2, 0, 0,
  29.         0, 0, 0, 4, 4, 4, 0, 4, 4, 0, 4, 4, 0, 4,14, 2, 2, 2, 0, 0,
  30.         0, 0, 0, 4, 4, 4, 0, 0, 0, 4, 4, 0, 4, 0, 0, 2, 2, 0, 0, 0,
  31.         0, 0, 0, 2, 4, 4, 4, 4, 4, 4, 4, 0, 4, 4,14, 2, 0, 0, 0, 0,
  32.         0, 0, 2, 2, 0, 4, 4, 4, 4, 0, 0, 4, 4, 4, 4, 0, 0, 0, 0, 0,
  33.         2, 2, 2, 2, 4, 0, 0, 4, 4, 0, 4, 4, 0, 4,14, 0, 0, 0, 0, 0,
  34.         0, 2, 2, 0, 4, 4, 4, 0, 0, 4, 4, 0, 4, 0, 2, 0, 0, 0, 0, 0,
  35.         0, 0, 0, 0, 0, 4, 4, 0, 4, 4, 4, 0, 4, 4, 2,14, 0, 0, 0, 0,
  36.         0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 0, 4, 0, 2, 2,14,14, 0, 0,
  37.         0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 4, 4, 2, 2, 2, 2, 2,14, 0,
  38.         0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 5,14, 0,
  39.         0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 2, 0, 0, 2, 2, 2, 0, 2,14,
  40.         0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2,14,
  41.         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2,
  42.         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 0,
  43.         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0,
  44.         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0,
  45.         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0,
  46.         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
  47.         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );
  48.  
  49.  
  50. var
  51.     TurtleSprite, TurtleSprite32, newfnt, pbm : array[0..2048] of byte;
  52.     vbm : pointer;
  53.  
  54.  
  55. Procedure AllocatedSprite( width, height, logicalwidth : integer; var bitmap );
  56. begin
  57.     xbmtopbm(bitmap,pbm);
  58.     XCompileBitmap( logicalwidth, bitmap, TurtleSprite );
  59. end;
  60.  
  61. Procedure loaduserfonts;
  62. var
  63.     f : file;
  64.     i : integer;
  65. begin
  66.     assign(f,'fonts\smalthin.fnt');
  67.     reset(f,1);
  68.     blockread(f,newfnt,filesize(f));
  69.     close(f);
  70.     xtextinit;
  71.     xregisteruserfont(newfnt);
  72.     xsetfont(2);
  73. end;
  74.  
  75. procedure main;
  76. var
  77.     i,j,k : integer;
  78.     ratio,ratio2,ratio3 : real;
  79.     pbmt0, pbmt1, vbmt0, vbmt1, cbmt0, cbmt1, cbm32t0, cbm32t1,
  80.     vbmticks,pbmticks,cbmticks,cbm32ticks : longint;
  81.     timer : longint absolute $0040:$006C;
  82.     size, size2, size3 : word;
  83. {$IFDEF DPMI}
  84.     dpmiptr : pointer;
  85.     sel : word;
  86. {$ENDIF}
  87. begin
  88.     xsetmode(XMODE320x240,360);
  89.     AllocatedSprite(20, 30, 90,turtle);
  90.  
  91.     vbm := xmakevbm(turtle,NonVisualOffs);
  92.     loaduserfonts;
  93.     xbgprintf(0,0,0,14,0,'This is a demo to show the speed difference between');
  94.     xbgprintf(0,8,0,14,0,'compiled, planar and video bitmaps.  The bitmap:');
  95.     xputpbm(140, 18, 0, pbm);
  96.     xbgprintf(0,48,0,14,0,'This demo uses the NON CLIPPED, MASKED versions of');
  97.     xbgprintf(0,56,0,14,0,'       ''PBM'' and ''VBM'' put functions');
  98.     xbgprintf(0,78,0,14,0,'Press a key to start with PLANAR BITMAP demo');
  99.     readkey;
  100.     xrectfill(0,0,ScrnPhysicalPixelWidth,ScrnPhysicalHeight,0,0);
  101.     pbmt0 := timer;
  102.     for k:=0 to 30 do
  103.         for j:=0 to (ScrnPhysicalHeight div 30)-1 do
  104.             for i:=0 to (ScrnPhysicalPixelWidth div 20)-1 do
  105.                 xputmaskedpbm(i*20, j*30, 0, pbm);
  106.     pbmt1 := timer;
  107.     pbmticks := abs(pbmt1-pbmt0);
  108.  
  109.  
  110.     xbgprintf(0,0,0,14,0,'Press a key to start with the VIDEO BITMAP demo');
  111.  
  112.     readkey;
  113.     xrectfill(0,0,ScrnPhysicalPixelWidth,ScrnPhysicalHeight,0,0);
  114.     vbmt0 := timer;
  115.     for k:=0 to 30 do
  116.         for j:=0 to (ScrnPhysicalHeight div 30)-1 do
  117.             for i:=0 to (ScrnPhysicalPixelWidth div 20)-1 do
  118.                 xputmaskedvbm(i*20, j*30, 0, vbm^);
  119.     vbmt1 := timer;
  120.     vbmticks := abs(vbmt1-vbmt0);
  121. {$IFDEF DPMI}
  122.     Sel := AllocSelector(dSeg);
  123.     Sel := AllocDStoCSAlias( Sel );
  124.     dpmiptr := ptr(Sel,Ofs(TurtleSprite));
  125. {$ENDIF}
  126.     xbgprintf(0,0,0,14,0,'Now Press a key to start with COMPILED BITMAP demo');
  127.     readkey;
  128.     xrectfill(0,0,ScrnPhysicalPixelWidth,ScrnPhysicalHeight,0,0);
  129.     cbmt0 := timer;
  130.     for k:=0 to 30 do
  131.         for j:=0 to (ScrnPhysicalHeight div 30)-1 do
  132.             for i:=0 to (ScrnPhysicalPixelWidth div 20)-1 do
  133. {$IFDEF DPMI}
  134.                 xputcbitmap(i*20, j*30, 0, dpmiptr^);
  135. {$ELSE}
  136.                 xputcbitmap(i*20, j*30, 0, TurtleSprite);
  137. {$ENDIF}
  138.     cbmt1 := timer;
  139.     cbmticks := abs(cbmt1-cbmt0);
  140.     size := XSizeOfCBitmap32( 90, turtle );
  141.     size3 := XSizeOfCBitmap( 90, turtle );
  142.     size2 := XCompileBitmap32( 90, turtle, TurtleSprite32 );
  143. {$IFDEF DPMI}
  144.     dpmiptr := ptr(Sel,Ofs(TurtleSprite32));
  145. {$ENDIF}
  146.     xbgprintf(0,0,0,14,0,'Now Press a key to start with 32BIT COMPILED BITMAP demo');
  147.     readkey;
  148.     xrectfill(0,0,ScrnPhysicalPixelWidth,ScrnPhysicalHeight,0,0);
  149.     cbm32t0 := timer;
  150.     for k:=0 to 30 do
  151.         for j:=0 to (ScrnPhysicalHeight div 30)-1 do
  152.             for i:=0 to (ScrnPhysicalPixelWidth div 20)-1 do
  153. {$IFDEF DPMI}
  154.                 xputcbitmap(i*20, j*30, 0, dpmiptr^);
  155. {$ELSE}
  156.                 xputcbitmap(i*20, j*30, 0, TurtleSprite32);
  157. {$ENDIF}
  158.     cbm32t1 := timer;
  159.     cbm32ticks := abs(cbm32t1-cbm32t0);
  160.     ratio3 := cbmticks/cbm32ticks;
  161.     ratio := pbmticks/cbm32ticks;
  162.     ratio2 := vbmticks/cbm32ticks;
  163.     readkey;
  164.     xtextmode;
  165. {$IFDEF DPMI}
  166.     writeln('DPMI version');
  167. {$ENDIF}
  168.     writeln('Planar Bitmaps         = ',pbmticks);
  169.     writeln('Video Bitmaps          = ',vbmticks);
  170.     writeln('Compiled Bitmaps       = ',cbmticks);
  171.     writeln('32Bit Compiled Bitmaps = ',cbm32ticks);
  172.     writeln;
  173.     writeln('PBM/CBM32        = ',ratio:8:10);
  174.     writeln('VBM/CBM32        = ',ratio2:8:10);
  175.     writeln('CBM/CBM32        = ',ratio3:8:10);
  176.     writeln( size,' = ',size2, ' = ', size3 );
  177. end;
  178.  
  179. begin
  180.     main;
  181. end.
  182.